package com.atom.module.lib.opengles.ext

/**
 * All rights Reserved, Designed By www.rongdasoft.com
 * @version V1.0
 * @Title: FunctionWrapper
 * @Description:
 * @author: wuyongzheng
 * @date: 2022/1/18
 * @Copyright: 2022/1/18 www.rongdasoft.com Inc. All rights reserved.
 */
sealed interface FunctionWrapper {

    interface Function1<Param1, Return> : FunctionWrapper {
        fun invoke(param1: Param1): Return
    }

    interface Function2<Param1, Param2, Return> : FunctionWrapper {
        fun invoke(param1: Param1, param2: Param2): Return
    }

    interface Function3<Param1, Param2, Param3, Return> : FunctionWrapper {
        fun invoke(param1: Param1, param2: Param2, param3: Param3): Return
    }

    interface Function4<Param1, Param2, Param3, Param4, Return> : FunctionWrapper {
        fun invoke(param1: Param1, param2: Param2, param3: Param3, param4: Param4): Return
    }

    interface Function5<Param1, Param2, Param3, Param4, Param5, Return> : FunctionWrapper {
        fun invoke(
            param1: Param1,
            param2: Param2,
            param3: Param3,
            param4: Param4,
            param5: Param5
        ): Return
    }

}